В этом упражнении вы будете управлять доступом к системным службам, изменяя правила системного брандмауэра с помощью firewalld.
firewalld
Результаты
Вы сможете настроить правила брандмауэра для управления доступом к службам.
Войдите на workstation как пользователь student с паролем student.
workstation
student
На workstation выполните команду lab netsecurity-firewalls start. Эта команда запускает подготовительный сценарий, который проверяет доступность хоста servera в сети.
servera
[student@workstation ~]$ lab netsecurity-firewalls start
[student@workstation ~]$
lab netsecurity-firewalls start
На workstation с помощью SSH войдите на хост servera как пользователь student. Системы настроены на использование ключей SSH для аутентификации, поэтому пароль не требуется.
[student@workstation ~]$ ssh student@servera ...output omitted... [student@servera ~]$
ssh student@servera
[student@servera ~]$
Убедитесь, что в системе servera установлены пакеты httpd и mod_ssl. Эти пакеты предоставляют веб-сервер Apache, который вы будете защищать с помощью брандмауэра, и необходимые расширения для раздачи контента веб-сервером по SSL.
[student@servera ~]$ sudo yum install httpd mod_ssl [sudo] password for student: student ...output omitted... Is this ok [y/N]: y ...output omitted... Complete!
sudo yum install httpd mod_ssl
[sudo] password for student:
Is this ok [y/N]:
y
На servera создайте файл /var/www/html/index.html как пользователь student. Добавьте одну строку со следующим текстом: I am servera.
/var/www/html/index.html
I am servera.
[student@servera ~]$ sudo bash -c \ "echo 'I am servera.' > /var/www/html/index.html"
sudo bash -c \
"echo 'I am servera.' > /var/www/html/index.html"
Запустите и включите службу httpd в системе servera.
httpd
[student@servera ~]$ sudo systemctl enable --now httpd Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
sudo systemctl enable --now httpd
Выйдите с servera.
[student@servera ~]$ exit logout Connection to servera closed. [student@workstation ~]$
exit
С машины workstation попробуйте получить доступ к веб-серверу на servera, используя порт открытого текста 80/TCP и порт с SSL-инкапсуляцией 443/TCP. Обе попытки должны завершиться ошибкой.
80/TCP
443/TCP
Эта команда не должна выполниться:
[student@workstation ~]$ curl http://servera.lab.example.com curl: (7) Failed to connect to servera.lab.example.com port 80: No route to host
curl http://servera.lab.example.com
Эта команда также не должна выполниться:
[student@workstation ~]$ curl -k https://servera.lab.example.com curl: (7) Failed to connect to servera.lab.example.com port 443: No route to host
curl -k https://servera.lab.example.com
Войдите на servera как пользователь student.
На servera убедитесь, что служба nftables замаскирована, а служба firewalld включена и работает.
nftables
Определите, имеет ли служба nftables статус masked.
masked
[student@servera ~]$ sudo systemctl status nftables [sudo] password for student: student ● nftables.service - Netfilter Tables Loaded: loaded (/usr/lib/systemd/system/nftables.service; disabled; vendor preset: disabled) Active: inactive (dead) Docs: man:nft(8)
sudo systemctl status nftables
Результаты показывают, что служба nftables отключена и неактивна, но не замаскирована. Выполните следующую команду, чтобы замаскировать службу.
[student@servera ~]$ sudo systemctl mask nftables Created symlink /etc/systemd/system/nftables.service → /dev/null.
sudo systemctl mask nftables
Убедитесь, что статус службы nftables ― masked.
[student@servera ~]$ sudo systemctl status nftables ● nftables.service Loaded: masked (Reason: Unit nftables.service is masked.) Active: inactive (dead)
Unit nftables.service is masked.
Убедитесь, что статус службы firewalld ― enabled и running.
[student@servera ~]$ sudo systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-05-22 15:36:02 CDT; 5min ago Docs: man:firewalld(1) Main PID: 703 (firewalld) Tasks: 2 (limit: 11405) Memory: 29.8M CGroup: /system.slice/firewalld.service └─703 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid May 22 15:36:01 servera.lab.example.com systemd[1]: Starting firewalld - dynamic firewall daemon... May 22 15:36:02 servera.lab.example.com systemd[1]: Started firewalld - dynamic firewall daemon.
sudo systemctl status firewalld
enabled
active (running)
С машины workstation откройте Firefox и войдите на веб-консоль, запущенную на servera, чтобы добавить службу httpd для зоны сети public.
public
В браузере Firefox перейдите по адресу https://servera.lab.example.com:9090, чтобы открыть веб-консоль. Примите самоподписанный сертификат, используемый servera, добавив его в исключения.
https://servera.lab.example.com:9090
Установите флажок Reuse my password for privileged tasks, чтобы получить права администратора.
Войдите в систему как пользователь student с паролем student.
Выберите Networking на панели навигации слева.
Щелкните ссылку Firewall на главной странице Networking.
Нажмите кнопку Add Services... в правой верхней части страницы Firewall.
На странице Add Services прокрутите список или воспользуйтесь полем поиска Filter Services, чтобы найти службу Secure WWW (HTTPS), и установите флажок рядом с ней.
Нажмите кнопку Add Services в правой нижней части страницы Add Services.
Вернитесь на терминал на workstation и проверьте свою работу. Для этого попробуйте посмотреть содержимое веб-сервера servera.
Эта команда должна выполниться:
[student@workstation ~]$ curl -k https://servera.lab.example.com I am servera.
В случае использования Firefox для подключения к веб-серверу появится запрос подтверждения сертификата хоста, если он успешно пройдет через брандмауэр.
Конец
На workstation запустите сценарий lab netsecurity-firewalls finish, чтобы закончить упражнение.
[student@workstation ~]$ lab netsecurity-firewalls finish
lab netsecurity-firewalls finish
Упражнение завершено.